package com.zspringboot.demo.utils;


import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;

import java.util.Collections;

/**
 * mybatis-plus 代码生成器
 * @program: springboot2
 * @description:
 * @author: LaoLang
 * @create: 2024-02-18 11:40
 * @version:1.0
 **/
public class CodeGenerator {
    public static void main(String[] args) {
        generate();
    }
    private static void  generate(){
        FastAutoGenerator.create("jdbc:mysql://localhost:3306/testo?useUnicode=true&characterEncoding=utf-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8"
                , "root"
                , "")
                .globalConfig(builder -> {
                    builder.author("laolang") // 设置作者
                            .enableSwagger() // 开启 swagger 模式
                            .fileOverride() // 覆盖已生成文件
                            .outputDir("E:\\z-vue-springboot\\zv-springboot\\zspringboot\\src\\main\\java"); // 指定输出目录
                })
//                .dataSourceConfig(builder -> builder.typeConvertHandler((globalConfig, typeRegistry, metaInfo) -> {
//                    int typeCode = metaInfo.getJdbcType().TYPE_CODE;
//                    if (typeCode == Types.SMALLINT) {
//                        // 自定义类型转换
//                        return DbColumnType.INTEGER;
//                    }
//                    return typeRegistry.getColumnType(metaInfo);
//
//                }))
                .packageConfig(builder -> {
                    builder.parent("com.zspringboot.demo") // 设置父包名
                            .moduleName(null) // 设置父包模块名
                            .pathInfo(Collections.singletonMap(OutputFile.mapperXml, "E:\\z-vue-springboot\\zv-springboot\\zspringboot\\src\\main\\resources\\mapper")); // 设置mapperXml生成路径
                })
                .strategyConfig(builder -> {
                    builder.controllerBuilder().enableHyphenStyle()//开启驼峰
                            .enableRestStyle();//开启 @RestController
                    builder.addInclude(
                            "zjh_title_content")// 设置需要生成的表名   内容
                            .addTablePrefix("t_", "sys_","zjh_"); // 设置过滤表前缀
                })
                //                            "zjh_net_effect",
//                            "zjh_plan_home",
//                            "zjh_result_home",
//                            "zjh_reward_punish",
//                            "zjh_specific_content",
//                            "zjh_target_title",// 设置需要生成的表名   内容
//                .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板，默认的是Velocity引擎模板
                .execute();
    }
}
